package cn.good.yan;

import cn.good.yan.entity.Order;
import cn.good.yan.entity.User;
import cn.good.yan.mapper.OrderMapper;
import cn.good.yan.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

/**
 * 垂直分片的测试
 * 引用：application2.properties 配置文件
 * 准备：server-order 数据源中有表（t_order）,server-user 数据源中有表（t_user）
 *
 * @author shengren.yan
 * @create 2024/11/30
 */
@SpringBootTest
public class SplitTest2 {

    @Autowired
    private UserMapper userMapper;

    @Autowired
    private OrderMapper orderMapper;


    /**
     * 垂直分片 - 写入数据的测试
     * 有2个数据库 （user库 order库）
     * 写操作，分别插入对应的数据库的sql
     * 会打印2条SQL 语句：Logic SQL（逻辑SQL） - Actual SQL（具体操作的库）
     */
    @Test
    public void testInsert() {

        // 绑定是user库， 执行的是server-user数据源配置
        User user = new User();
        user.setUname("李娜");
        userMapper.insert(user);


        // 绑定是order库， 执行的是server-ord数据源配置
        Order order = new Order();
        order.setName("订单1");
        order.setUId(user.getId());
        orderMapper.insert(order);

    }


    /**
     * 垂直分片 - 读数据的测试
     * 有2个数据库 （user库 order库）
     * du操作，分别插入对应的数据库的sql
     * 会打印2条SQL 语句：Logic SQL（逻辑SQL） - Actual SQL（具体操作的库）
     */
    @Test
    public void testQuery() {

        // 绑定是user库， 执行的是server-user数据源配置
        List<User> users = userMapper.selectList(null);
        System.out.println(users);


        System.out.println("-------------------------------------------");

        // 绑定是order库， 执行的是server-ord数据源配置
        List<Order> orders = orderMapper.selectList(null);
        System.out.println(orders);

    }


}
